import org.apache.spark.SparkConf
import org.apache.spark.SparkContext

object SumScoresByNameExample {

  def main(args: Array[String]): Unit = {
    // 创建Spark配置对象
    val conf = new SparkConf().setAppName("SumScoresByName").setMaster("local[*]")
    val sc = new SparkContext(conf)

    // 创建包含5个元素的RDD，每个元素是一个二元组（名字，分数）
    val scoresRdd = sc.parallelize(Seq(
      ("Alice", 90),
      ("Bob", 80),
      ("Charlie", 70),
      ("Alice", 85),
      ("Bob", 95)
    ))

    // 使用reduceByKey函数计算每个名字对应的分数之和
    val sumScoresByNameRdd = scoresRdd.reduceByKey(_ + _)

    // 打印每个名字及其对应的分数之和
    sumScoresByNameRdd.foreach { case (name, totalScore) =>
      println(s"$name: $totalScore")
    }

    // 停止SparkContext
    sc.stop()
  }
}